#ifndef GLOBAL_H
#define GLOBAL_H

#include <linux/limits.h>
#include <stdarg.h>

#define NO_FMAKEFILE 0x01
#define OPEN_FAILED 0x02
#define NO_ELINE 0x03           //文件中不存在Eline
#define MORE_ELINE 0x04         //文件中Eline多于一行
#define STAT_ERR 0x05           //获取文件时间发生错误
#define UNKNOWN_TOKEN 0x06      //无法识别的开始符号(不是E F等)
#define BAD_FORMAT 0x07         //开始标记后没有空白，格式错误
#define SYS_FAULT 0x08          //执行system函数发生错误

#define MAXLINE 1024          //假设每行最多有1024个字符

//源文件与目标文件名的结构体
typedef struct co_name{
    char cname[NAME_MAX];//源文件名字
    char oname[NAME_MAX];//对应目标文件名字
    int compile_flag;   //是否需要编译标记
    struct co_name *next;
}CO_NAME;

//头文件名的结构体
typedef struct h_name{
    char hname[NAME_MAX];//头文件名字
    struct h_name *next;
}H_NAME;

//只声明,防止重复包含出现错误
extern CO_NAME *CO_HEAD;
extern H_NAME *H_HEAD;

extern char *ENAME;//最后生成的可执行文件
extern char *FLAGS;//保存GCC的变异选项
extern char *LIBS;//GCC链接使用的库或者其他目标文件

/*打印错误信息*/
void err_quit(int,...);

#endif
